﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VemTransporte.Models.Fachada;
using VemTransporte.Models.Basica;
using VemTransporte.Models.Factory;

namespace VemTransporte.Views.UsuarioEmpresa
{
    public partial class CadastroLinha : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Empresa emp = (Empresa)Session["EmpresaLogada"];

                if (emp != null)
                {
                    ImageEmpresaLogoTipo.ImageUrl = string.Format("/EmpresaLogos/{0}.jpg", emp.Id);
                    if (emp.TipoAcesso.Equals("ADMEMPRESA"))
                    {
                        liMenuEmpresaCadastro.Visible = true;
                        liMenuCadastroInicialEmpresa.Visible = false;
                        liMenuAlterarEndEmpresa.Visible = true;
                        liMenuCadastrarTelefones.Visible = true;
                        liMenuAlterarSenhaEmpresa.Visible = true;
                        liMenuAlterarLinhaEmpresa.Visible = false;
                        liMenuCadastroParadaEmpresa.Visible = false;
                        liMenuHoraLinhaEmpresa.Visible = false;
                        liMenuEmpresaVeiculo.Visible = true;
                    }
                    else if (emp.TipoAcesso.Equals("ADMTRANSPORTEPUBLICO"))
                    {
                        liMenuEmpresaCadastro.Visible = false;
                        liMenuCadastroInicialEmpresa.Visible = false;
                        liMenuAlterarEndEmpresa.Visible = false;
                        liMenuCadastrarTelefones.Visible = false;
                        liMenuAlterarSenhaEmpresa.Visible = false;
                        liMenuAlterarLinhaEmpresa.Visible = true;
                        liMenuCadastroParadaEmpresa.Visible = true;
                        liMenuHoraLinhaEmpresa.Visible = true;
                        liMenuEmpresaVeiculo.Visible = false;
                    }
                    else
                    {

                    }

                    if (emp.NomeFantasia.IndexOf(" ") > 0)
                    {
                        LabelNomeEmpresa.Text = emp.NomeFantasia.Substring(0, emp.NomeFantasia.IndexOf(" "));
                    }
                    else
                    {
                        LabelNomeEmpresa.Text = emp.NomeFantasia;
                    }

                    IList<Linha> linhas = Fachada.Instance.ProcurarLinhaTodos();

                    GridViewLinhas.DataSource = linhas;
                    GridViewLinhas.DataBind();

                    Fachada.Instance.Linhas = linhas;
                }
                else
                {
                    Response.Redirect("LoginEmpresa.aspx");
                }

            }


        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                Empresa emp = (Empresa)Session["EmpresaLogada"];

                if (emp != null)
                {

                    if (Fachada.Instance.LinhaAlterar != null)
                    {
                        Fachada.Instance.LinhaAlterar.Numero = TextBoxNumeroLinha.Text;
                        Fachada.Instance.LinhaAlterar.Nome = TextBoxNomeLinha.Text;

                        Fachada.Instance.Salvar(Fachada.Instance.LinhaAlterar);

                        Fachada.Instance.LinhaAlterar = null;

                        ButtonSalvarCadastrar.Text = "Adicionar";
                    }
                    else
                    {
                        Linha l = LocalizacaoFactory.Instance.CreateLinha();
                        l.Numero = TextBoxNumeroLinha.Text;
                        l.Nome = TextBoxNomeLinha.Text;
                        Fachada.Instance.Salvar(l);
                    }

                    ErrorMessage.Text = "";

                    TextBoxNumeroLinha.Text = "";

                    TextBoxNomeLinha.Text = "";

                    IList<Linha> linhas = Fachada.Instance.ProcurarLinhaTodos();

                    GridViewLinhas.DataSource = linhas;
                    GridViewLinhas.DataBind();

                    Session["EmpresaLogada"] = emp;

                    ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(Page), "MSG", "javascript:alert('Efetuado com sucesso!');", true);
                }
                else
                {
                    Response.Redirect("LoginEmpresa.aspx");
                }
            }
            catch (Exception ex)
            {
                ErrorMessage.Text = ex.Message;
            }
        }

        protected void GridViewLinhas_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                this.GridViewLinhas.PageIndex = e.NewPageIndex;

                IList<Linha> linhas = Fachada.Instance.ProcurarLinhaTodos();

                GridViewLinhas.DataSource = linhas;
                GridViewLinhas.DataBind();

                Fachada.Instance.Linhas = linhas;
            }
            catch (Exception ex)
            {
                ErrorMessage.Text = ex.Message;
            }

        }

        protected void GridViewLinhas_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            e.Cancel = true;
        }

        protected void GridViewLinhas_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string numero = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "numero"));
                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).Attributes.Add("onClick",
                       " return confirm('Confirma o cancelamento da linha nº " + numero + "?');");
            }
        }

        protected void GridViewLinhas_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp == null)
            {
                Response.Redirect("LoginEmpresa.aspx");
            }

            if (e.CommandName == "excluir")
            {
                try
                {
                    string numeroLinha = e.CommandArgument.ToString();

                    Linha linhaExcluir = Fachada.Instance.ProcurarLinhaPorNumero(numeroLinha);

                    if (linhaExcluir != null)
                    {
                        Fachada.Instance.Remover(linhaExcluir);

                        IList<Linha> linhas = Fachada.Instance.ProcurarLinhaTodos();

                        GridViewLinhas.DataSource = linhas;
                        GridViewLinhas.DataBind();

                        Fachada.Instance.Linhas = linhas;

                        ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(Page), "MSG", "javascript:alert('Excluído com sucesso!');", true);
                    }
                }
                catch (Exception ex)
                {
                    ErrorMessage.Text = ex.Message;
                }
            }
        }

        protected void GridViewLinhas_RowEditing(object sender, GridViewEditEventArgs e)
        {
            Fachada.Instance.LinhaAlterar = Fachada.Instance.Linhas[e.NewEditIndex];

            TextBoxNumeroLinha.Text = Fachada.Instance.LinhaAlterar.Numero;
            TextBoxNomeLinha.Text = Fachada.Instance.LinhaAlterar.Nome;

            ButtonSalvarCadastrar.Text = "Alterar";

            e.Cancel = true;
        }
    }

    /*// Get the list of customers from the session
            List<Customer> customerList = default(List<Customer>);
            customerList = Session["Customers"] as List<Customer>;
            // Sort key is different, clear the last sort direction
            if (LastSortKey != e.SortExpression) {
                LastSortDirection = string.Empty;
            }
            // Perform the sort using Linq
            switch (e.SortExpression) {
                case "LastName":
                    customerList = Sort(customerList,
                                        cust=> cust.LastName);
                    break;
                case "FirstName":
                    customerList = Sort(customerList,
                                        cust=> cust.FirstName);
                    break;
                case "EmailAddress":
                    customerList = Sort(customerList,
                                        cust => cust.EmailAddress);
                    break;
            }
            LastSortKey = e.SortExpression;
            // Rebind
            CustomerGridView.DataSource = customerList;
            CustomerGridView.DataBind();
            // Store in a session variable
            Session.Add("Customers", customerList);
        } /**/
}